跳到主要内容
import type { CartItem } from '../stores/types';

interface SharedWorkerGlobalScope extends WindowOrWorkerGlobalScope {
onconnect: ((e: MessageEvent) => void) | null;
}

let cartData: CartItem[] = [];
// 储存所有页面的端口
const ports: MessagePort[] = [];
(self as unknown as SharedWorkerGlobalScope).onconnect = (e: MessageEvent) => {
const port = e.ports[0];
ports.push(port);

// 新页面连接,发送当前数据
port.postMessage(cartData);

port.onmessage = function (e) {
cartData = e.data; // 更新共享状态
// 广播给所有其它的页面
ports.forEach(p => {
if (p !== port) {
p.postMessage(cartData);
}
});
};

port.start();
};